<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>MiXiM: D:/Projects/MiXiM/extsrc/mixim/src/base/phyLayer/MappingBase.h Source File</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">MiXiM
   &#160;<span id="projectnumber">2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('a00298.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">MappingBase.h</div>  </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef FUNCTION_H_</span>
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define FUNCTION_H_</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span>
<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;omnetpp.h&gt;</span>
<a name="l00005"></a>00005 <span class="preprocessor">#include &lt;map&gt;</span>
<a name="l00006"></a>00006 <span class="preprocessor">#include &lt;set&gt;</span>
<a name="l00007"></a>00007 <span class="preprocessor">#include &lt;string&gt;</span>
<a name="l00008"></a>00008 <span class="preprocessor">#include &lt;algorithm&gt;</span>
<a name="l00009"></a>00009 <span class="preprocessor">#include &lt;cassert&gt;</span>
<a name="l00010"></a>00010 <span class="preprocessor">#include &lt;sstream&gt;</span>
<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;iomanip&gt;</span>
<a name="l00012"></a>00012 
<a name="l00013"></a>00013 <span class="preprocessor">#include &quot;MiXiMDefs.h&quot;</span>
<a name="l00014"></a>00014 <span class="preprocessor">#include &quot;Interpolation.h&quot;</span>
<a name="l00015"></a>00015 
<a name="l00031"></a><a class="code" href="a00085.html">00031</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a> {
<a name="l00032"></a>00032 <span class="keyword">public</span>:
<a name="l00034"></a><a class="code" href="a00085.html#a98893d7be4182e964c9c3e495fed3cac">00034</a>   <span class="keyword">typedef</span> std::map&lt;std::string, int&gt;   <a class="code" href="a00085.html#a98893d7be4182e964c9c3e495fed3cac" title="Type for map from dimension name to ID.">DimensionIDMap</a>;
<a name="l00035"></a>00035   <span class="keyword">typedef</span> DimensionIDMap::key_type     DimensionNameType;
<a name="l00036"></a>00036   <span class="keyword">typedef</span> DimensionIDMap::mapped_type  DimensionIdType;
<a name="l00037"></a>00037 <span class="keyword">protected</span>:
<a name="l00039"></a>00039   <span class="keyword">typedef</span> std::map&lt; DimensionIdType
<a name="l00040"></a><a class="code" href="a00085.html#a8bac5d3aa88306fbd0192d13b80ed668">00040</a>               , DimensionNameType&gt; <a class="code" href="a00085.html#a8bac5d3aa88306fbd0192d13b80ed668" title="Type for map from ID to dimension name.">DimensionNameMap</a>;
<a name="l00041"></a>00041 
<a name="l00048"></a>00048   <span class="keyword">static</span> <a class="code" href="a00085.html#a98893d7be4182e964c9c3e495fed3cac" title="Type for map from dimension name to ID.">DimensionIDMap</a>&amp; dimensionIDs();
<a name="l00049"></a>00049 
<a name="l00056"></a>00056   <span class="keyword">static</span> <a class="code" href="a00085.html#a8bac5d3aa88306fbd0192d13b80ed668" title="Type for map from ID to dimension name.">DimensionNameMap</a>&amp; dimensionNames();
<a name="l00057"></a>00057 
<a name="l00064"></a>00064   <span class="keyword">static</span> DimensionIdType&amp; nextFreeID();
<a name="l00065"></a>00065 
<a name="l00070"></a>00070   <span class="keyword">static</span> <span class="keywordtype">int</span> getDimensionID(<span class="keyword">const</span> DimensionNameType&amp; name);
<a name="l00071"></a>00071 
<a name="l00073"></a><a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e">00073</a>   DimensionIdType <a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e" title="The unique id of the dimension this instance represents.">id</a>;
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 <span class="keyword">protected</span>:
<a name="l00076"></a>00076 
<a name="l00077"></a>00077 <span class="keyword">public</span>:
<a name="l00080"></a><a class="code" href="a00085.html#a16cb1f186dd3f48d33a4aebe948001d7">00080</a>   <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a> <a class="code" href="a00085.html#a16cb1f186dd3f48d33a4aebe948001d7" title="Shortcut to the time Dimension, same as &#39;Dimension(&quot;time&quot;)&#39;, but spares the parsing of a string...">time</a>;
<a name="l00081"></a>00081 
<a name="l00084"></a><a class="code" href="a00085.html#ad4360e7d88c881d06ee61033ad99d66f">00084</a>   <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a> <a class="code" href="a00085.html#ad4360e7d88c881d06ee61033ad99d66f" title="Shortcut to the frequency Dimension, same as &#39;Dimension(&quot;frequency&quot;)&#39;, but spares the parsing of a ...">frequency</a>;
<a name="l00085"></a>00085 
<a name="l00086"></a>00086 <span class="keyword">public</span>:
<a name="l00087"></a>00087   <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>():
<a name="l00088"></a>00088     id(0)
<a name="l00089"></a>00089   {}
<a name="l00090"></a>00090 
<a name="l00095"></a>00095   <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>(<span class="keyword">const</span> DimensionNameType&amp; name);
<a name="l00096"></a>00096 
<a name="l00105"></a>00105   <span class="keyword">static</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; time_static();
<a name="l00106"></a>00106 
<a name="l00115"></a>00115   <span class="keyword">static</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; frequency_static();
<a name="l00116"></a>00116 
<a name="l00120"></a><a class="code" href="a00085.html#aa28efdf18dbf57fdc444f2dd75f3da36">00120</a>   <span class="keywordtype">bool</span> <a class="code" href="a00085.html#aa28efdf18dbf57fdc444f2dd75f3da36" title="Returns true if the ids of the two dimensions are equal.">operator==</a>(<span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keywordtype">id</span> == other.<a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e" title="The unique id of the dimension this instance represents.">id</a>; }
<a name="l00121"></a>00121 
<a name="l00128"></a><a class="code" href="a00085.html#a3ecf516080e05e566b995ceec18681e4">00128</a>   <span class="keywordtype">bool</span> <a class="code" href="a00085.html#a3ecf516080e05e566b995ceec18681e4" title="Returns true if the id of the other dimension is greater then the id of this dimension.">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; other)<span class="keyword"> const  </span>{ <span class="keywordflow">return</span> <span class="keywordtype">id</span>  &lt; other.<a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e" title="The unique id of the dimension this instance represents.">id</a>; }
<a name="l00129"></a>00129 
<a name="l00131"></a><a class="code" href="a00085.html#a28bb1ac7d3b0ed4e8fd43c54203c552b">00131</a>   <span class="keywordtype">bool</span> <a class="code" href="a00085.html#a28bb1ac7d3b0ed4e8fd43c54203c552b" title="Sorting operator by dimension ID.">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keywordtype">id</span> &lt;= other.<a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e" title="The unique id of the dimension this instance represents.">id</a>; }
<a name="l00133"></a><a class="code" href="a00085.html#a7b87afee490115d91184cadb4dbd19fb">00133</a>   <span class="keywordtype">bool</span> <a class="code" href="a00085.html#a7b87afee490115d91184cadb4dbd19fb" title="Sorting operator by dimension ID.">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; other)<span class="keyword"> const  </span>{ <span class="keywordflow">return</span> <span class="keywordtype">id</span>  &gt; other.<a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e" title="The unique id of the dimension this instance represents.">id</a>; }
<a name="l00135"></a><a class="code" href="a00085.html#a63668e024e4a1ba8ac2d819bdf01de23">00135</a>   <span class="keywordtype">bool</span> <a class="code" href="a00085.html#a63668e024e4a1ba8ac2d819bdf01de23" title="Sorting operator by dimension ID.">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keywordtype">id</span> &gt;= other.<a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e" title="The unique id of the dimension this instance represents.">id</a>; }
<a name="l00137"></a><a class="code" href="a00085.html#a17b7c615400bc79a9e7fcc40f17914dc">00137</a>   <span class="keywordtype">bool</span> <a class="code" href="a00085.html#a17b7c615400bc79a9e7fcc40f17914dc" title="Sorting operator by dimension ID.">operator!=</a>(<span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keywordtype">id</span> != other.<a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e" title="The unique id of the dimension this instance represents.">id</a>; }
<a name="l00138"></a>00138 
<a name="l00142"></a><a class="code" href="a00085.html#a722a82180c4e8ea5bf2a4a34898a841d">00142</a>   DimensionNameType <a class="code" href="a00085.html#a722a82180c4e8ea5bf2a4a34898a841d" title="Returns the name of this dimension.">getName</a>()<span class="keyword"> const</span>{
<a name="l00143"></a>00143     <span class="keyword">static</span> <a class="code" href="a00085.html#a8bac5d3aa88306fbd0192d13b80ed668" title="Type for map from ID to dimension name.">DimensionNameMap</a>&amp; dimensionNames = <a class="code" href="a00085.html#a5dd35619b73de635a0a57aca248af68a" title="Mapping from id to name of registered dimensions.">Dimension::dimensionNames</a>();
<a name="l00144"></a>00144     <span class="keywordflow">return</span> dimensionNames.find(<span class="keywordtype">id</span>)-&gt;second;
<a name="l00145"></a>00145   }
<a name="l00146"></a>00146 
<a name="l00155"></a><a class="code" href="a00085.html#a920a9f94db7163fa08ae0f00956d95e7">00155</a>   DimensionIdType <a class="code" href="a00085.html#a920a9f94db7163fa08ae0f00956d95e7" title="Returns the unique id of the dimension this instance represents.">getID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> id; }
<a name="l00156"></a>00156 
<a name="l00158"></a><a class="code" href="a00085.html#aa6723258d45f8e2d57a861db96d05a43">00158</a>   <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="a00085.html#aa6723258d45f8e2d57a861db96d05a43" title="Output operator for a dimension.">operator&lt;&lt;</a>(std::ostream&amp; out, <span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>&amp; d) {
<a name="l00159"></a>00159       <span class="keywordflow">return</span> (out &lt;&lt; d.<a class="code" href="a00085.html#a722a82180c4e8ea5bf2a4a34898a841d" title="Returns the name of this dimension.">getName</a>() &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; d.<a class="code" href="a00085.html#a4d051377fa3482bdb1f6463eaded749e" title="The unique id of the dimension this instance represents.">id</a> &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>);
<a name="l00160"></a>00160     }
<a name="l00161"></a>00161 };
<a name="l00162"></a>00162 
<a name="l00178"></a><a class="code" href="a00086.html">00178</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> <span class="comment">/*:public std::set&lt;Dimension&gt;*/</span> {
<a name="l00179"></a>00179 <span class="keyword">protected</span>:
<a name="l00180"></a>00180   <span class="keyword">typedef</span> std::set&lt;Dimension&gt; _Base;
<a name="l00181"></a>00181 
<a name="l00182"></a>00182   _Base Storage;
<a name="l00183"></a>00183 <span class="keyword">public</span>:
<a name="l00184"></a>00184   <span class="keyword">typedef</span> _Base::value_type       value_type;
<a name="l00185"></a>00185   <span class="keyword">typedef</span> _Base::iterator         iterator;
<a name="l00186"></a>00186   <span class="keyword">typedef</span> _Base::reverse_iterator reverse_iterator;
<a name="l00187"></a>00187   <span class="keyword">typedef</span> _Base::reverse_iterator const_reverse_iterator;
<a name="l00188"></a>00188   <span class="keyword">typedef</span> _Base::const_iterator   const_iterator;
<a name="l00189"></a>00189   <span class="keyword">typedef</span> _Base::size_type        size_type;
<a name="l00190"></a>00190   <span class="keyword">typedef</span> _Base::const_reference  const_reference;
<a name="l00191"></a>00191 
<a name="l00193"></a><a class="code" href="a00086.html#abf3b99a319deca6efc123ec52d77d867">00193</a>   <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> <a class="code" href="a00086.html#abf3b99a319deca6efc123ec52d77d867" title="Shortcut to a DimensionSet which only contains time.">timeDomain</a>;
<a name="l00194"></a>00194 
<a name="l00196"></a><a class="code" href="a00086.html#ac3f34a560d6c4ad5dc8d72dc69359b77">00196</a>   <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> <a class="code" href="a00086.html#ac3f34a560d6c4ad5dc8d72dc69359b77" title="Shortcut to a DimensionSet which contains time and frequency.">timeFreqDomain</a>;
<a name="l00197"></a>00197 <span class="keyword">public</span>:
<a name="l00201"></a><a class="code" href="a00086.html#a09645917a6984ef63aea0f3428fb97e6">00201</a>   <a class="code" href="a00086.html#a09645917a6984ef63aea0f3428fb97e6" title="Default constructor creates an empty DimensionSet.">DimensionSet</a>() : Storage() {}
<a name="l00202"></a>00202 
<a name="l00206"></a><a class="code" href="a00086.html#a9b2336c05b14145a0519bbe3fdc33f05">00206</a>   <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; o) : Storage(o.Storage)
<a name="l00207"></a>00207   {}
<a name="l00208"></a>00208 
<a name="l00215"></a><a class="code" href="a00086.html#a800e56f0c05af864c372df7e70daea8f">00215</a>   <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; operator=(<a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> <span class="keyword">const</span>&amp; copy)
<a name="l00216"></a>00216   {
<a name="l00217"></a>00217     <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> tmp(copy); <span class="comment">// All resource all allocation happens here.</span>
<a name="l00218"></a>00218                               <span class="comment">// If this fails the copy will throw an exception</span>
<a name="l00219"></a>00219                               <span class="comment">// and &#39;this&#39; object is unaffected by the exception.</span>
<a name="l00220"></a>00220     swap(tmp);
<a name="l00221"></a>00221     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00222"></a>00222   }
<a name="l00223"></a>00223 
<a name="l00232"></a><a class="code" href="a00086.html#ac1230bce09abeef30d87519bf03b3167">00232</a>   <span class="keywordtype">void</span> swap(<a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; s)
<a name="l00233"></a>00233   {
<a name="l00234"></a>00234     <span class="comment">// X::swap(s); // swap the base class members</span>
<a name="l00235"></a>00235     <span class="comment">/* Swap all D members */</span>
<a name="l00236"></a>00236     std::swap(Storage, s.Storage);
<a name="l00237"></a>00237   }
<a name="l00238"></a>00238 
<a name="l00243"></a><a class="code" href="a00086.html#a743d9c2b59961b111abb268aa4258b06">00243</a>   <a class="code" href="a00086.html#a743d9c2b59961b111abb268aa4258b06" title="Creates a new DimensionSet with the passed Dimension as initial Dimension.">DimensionSet</a>(<span class="keyword">const</span> DimensionSet::value_type&amp; d) : Storage() {
<a name="l00244"></a>00244     Storage.insert(d);
<a name="l00245"></a>00245   }
<a name="l00250"></a><a class="code" href="a00086.html#a3a857486e570401c8a748f90a9a63f8f">00250</a>   <a class="code" href="a00086.html#a3a857486e570401c8a748f90a9a63f8f" title="Creates a new DimensionSet with the passed Dimensions as initial Dimensions (convenience method)...">DimensionSet</a>(<span class="keyword">const</span> DimensionSet::value_type&amp; d1, <span class="keyword">const</span> DimensionSet::value_type&amp; d2) : Storage() {
<a name="l00251"></a>00251     Storage.insert(d1);
<a name="l00252"></a>00252     Storage.insert(d2);
<a name="l00253"></a>00253   }
<a name="l00258"></a><a class="code" href="a00086.html#a8891447188b7e386f82e536546756157">00258</a>   <a class="code" href="a00086.html#a8891447188b7e386f82e536546756157" title="Creates a new DimensionSet with the passed Dimensions as initial Dimensions (convenience method)...">DimensionSet</a>(<span class="keyword">const</span> DimensionSet::value_type&amp; d1, <span class="keyword">const</span> DimensionSet::value_type&amp; d2, <span class="keyword">const</span> DimensionSet::value_type&amp; d3) : Storage() {
<a name="l00259"></a>00259     Storage.insert(d1);
<a name="l00260"></a>00260     Storage.insert(d2);
<a name="l00261"></a>00261     Storage.insert(d3);
<a name="l00262"></a>00262   }
<a name="l00263"></a>00263 
<a name="l00272"></a><a class="code" href="a00086.html#aae6d8ce3a87e3e1571b97c92f11363fb">00272</a>   <span class="keywordtype">bool</span> <a class="code" href="a00086.html#aae6d8ce3a87e3e1571b97c92f11363fb" title="Returns true if the passed DimensionSet is a subset of this DimensionSet.">isSubSet</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; other)<span class="keyword"> const</span>{
<a name="l00273"></a>00273     <span class="keywordflow">if</span>(Storage.size() &lt; other.Storage.size())
<a name="l00274"></a>00274       <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00275"></a>00275 
<a name="l00276"></a>00276     <span class="keywordflow">return</span> std::includes(Storage.begin(), Storage.end(), other.Storage.begin(), other.Storage.end());
<a name="l00277"></a>00277   }
<a name="l00278"></a>00278 
<a name="l00288"></a><a class="code" href="a00086.html#af3c9b9a85688a4f1ef8caa3b21bf7423">00288</a>   <span class="keywordtype">bool</span> <a class="code" href="a00086.html#af3c9b9a85688a4f1ef8caa3b21bf7423" title="Returns true if the passed DimensionSet is a real subset of this DimensionSet.">isRealSubSet</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; other)<span class="keyword"> const</span>{
<a name="l00289"></a>00289     <span class="keywordflow">if</span>(size() &lt;= other.<a class="code" href="a00086.html#a0bf532a8e4cbf151337d24b7246790a9" title="Returns the size of the DimensionSet.">size</a>())
<a name="l00290"></a>00290       <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00291"></a>00291 
<a name="l00292"></a>00292     <span class="keywordflow">return</span> std::includes(begin(), end(), other.begin(), other.end());
<a name="l00293"></a>00293   }
<a name="l00294"></a>00294 
<a name="l00298"></a><a class="code" href="a00086.html#a397190b81dbfde450e4fe1e47633fb39">00298</a>   <span class="keywordtype">void</span> <a class="code" href="a00086.html#a397190b81dbfde450e4fe1e47633fb39" title="Adds the passed dimension to the DimensionSet.">addDimension</a>(<span class="keyword">const</span> DimensionSet::value_type&amp; d) {
<a name="l00299"></a>00299     Storage.insert(d);
<a name="l00300"></a>00300   }
<a name="l00301"></a>00301 
<a name="l00305"></a><a class="code" href="a00086.html#a015cb6fa6c77b26b8c7b1e65827b8342">00305</a>   <span class="keywordtype">bool</span> <a class="code" href="a00086.html#a015cb6fa6c77b26b8c7b1e65827b8342" title="Returns true if the passed Dimension is inside this DimensionSet.">hasDimension</a>(<span class="keyword">const</span> DimensionSet::value_type&amp; d)<span class="keyword"> const</span>{
<a name="l00306"></a>00306     <span class="keywordflow">return</span> Storage.count(d) &gt; 0;
<a name="l00307"></a>00307   }
<a name="l00308"></a>00308 
<a name="l00312"></a><a class="code" href="a00086.html#af391aba2c6f2238073c0b215d6c7311c">00312</a>   <span class="keywordtype">bool</span> <a class="code" href="a00086.html#af391aba2c6f2238073c0b215d6c7311c" title="Returns true if the dimensions of both sets are equal.">operator==</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; o)<span class="keyword"> const </span>{
<a name="l00313"></a>00313     <span class="keywordflow">if</span>(size() != o.<a class="code" href="a00086.html#a0bf532a8e4cbf151337d24b7246790a9" title="Returns the size of the DimensionSet.">size</a>())
<a name="l00314"></a>00314       <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00315"></a>00315 
<a name="l00316"></a>00316     <span class="keywordflow">return</span> std::equal(begin(), end(), o.begin());
<a name="l00317"></a>00317   }
<a name="l00318"></a>00318 
<a name="l00319"></a>00319   iterator begin() {
<a name="l00320"></a>00320     <span class="keywordflow">return</span> Storage.begin();
<a name="l00321"></a>00321   }
<a name="l00322"></a>00322 
<a name="l00323"></a>00323   iterator end() {
<a name="l00324"></a>00324     <span class="keywordflow">return</span> Storage.end();
<a name="l00325"></a>00325   }
<a name="l00326"></a>00326 
<a name="l00327"></a>00327   const_iterator begin()<span class="keyword"> const </span>{
<a name="l00328"></a>00328     <span class="keywordflow">return</span> Storage.begin();
<a name="l00329"></a>00329   }
<a name="l00330"></a>00330 
<a name="l00331"></a>00331   const_iterator end()<span class="keyword"> const </span>{
<a name="l00332"></a>00332     <span class="keywordflow">return</span> Storage.end();
<a name="l00333"></a>00333   }
<a name="l00334"></a>00334 
<a name="l00335"></a>00335   reverse_iterator rbegin() {
<a name="l00336"></a>00336     <span class="keywordflow">return</span> Storage.rbegin();
<a name="l00337"></a>00337   }
<a name="l00338"></a>00338 
<a name="l00339"></a>00339   reverse_iterator rend() {
<a name="l00340"></a>00340     <span class="keywordflow">return</span> Storage.rend();
<a name="l00341"></a>00341   }
<a name="l00342"></a>00342 
<a name="l00343"></a>00343   const_reverse_iterator rbegin()<span class="keyword"> const </span>{
<a name="l00344"></a>00344     <span class="keywordflow">return</span> Storage.rbegin();
<a name="l00345"></a>00345   }
<a name="l00346"></a>00346 
<a name="l00347"></a>00347   const_reverse_iterator rend()<span class="keyword"> const </span>{
<a name="l00348"></a>00348     <span class="keywordflow">return</span> Storage.rend();
<a name="l00349"></a>00349   }
<a name="l00350"></a>00350 
<a name="l00351"></a>00351   const_iterator find(<span class="keyword">const</span> value_type&amp; __x)<span class="keyword"> const </span>{
<a name="l00352"></a>00352     <span class="keywordflow">return</span> Storage.find(__x);
<a name="l00353"></a>00353   }
<a name="l00354"></a>00354 
<a name="l00356"></a><a class="code" href="a00086.html#a0bf532a8e4cbf151337d24b7246790a9">00356</a>   size_type <a class="code" href="a00086.html#a0bf532a8e4cbf151337d24b7246790a9" title="Returns the size of the DimensionSet.">size</a>()<span class="keyword"> const </span>{
<a name="l00357"></a>00357     <span class="keywordflow">return</span> Storage.size();
<a name="l00358"></a>00358   }
<a name="l00359"></a>00359 
<a name="l00369"></a>00369   <span class="keyword">template</span>&lt;<span class="keyword">typename</span> _InputIterator&gt;
<a name="l00370"></a>00370   <span class="keywordtype">void</span>
<a name="l00371"></a><a class="code" href="a00086.html#a692159c06427648fbd09f0cd879b3ec7">00371</a>   insert(_InputIterator __first, _InputIterator __last)
<a name="l00372"></a>00372   { Storage.insert(__first, __last); }
<a name="l00373"></a>00373 
<a name="l00393"></a>00393   iterator
<a name="l00394"></a><a class="code" href="a00086.html#ab4302bf6cfb3dc417c7a3323efc908e0">00394</a>   <a class="code" href="a00086.html#ab4302bf6cfb3dc417c7a3323efc908e0" title="Attempts to insert an element into the DimensionSet.">insert</a>(const_iterator __position, <span class="keyword">const</span> value_type&amp; __x) {
<a name="l00395"></a>00395     <span class="keywordflow">return</span> Storage.insert(__position, __x);
<a name="l00396"></a>00396   }
<a name="l00397"></a>00397 
<a name="l00399"></a><a class="code" href="a00086.html#a41c765e5e5c1ff02d36855bdd0d3601c">00399</a>   <span class="keywordtype">bool</span> <a class="code" href="a00086.html#a41c765e5e5c1ff02d36855bdd0d3601c" title="Returns true if the DimensionSet is empty.">empty</a>()<span class="keyword"> const </span>{
<a name="l00400"></a>00400     <span class="keywordflow">return</span> Storage.empty();
<a name="l00401"></a>00401   }
<a name="l00402"></a>00402 };
<a name="l00403"></a>00403 
<a name="l00416"></a><a class="code" href="a00013.html">00416</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a> {
<a name="l00417"></a>00417 <span class="keyword">public</span>:
<a name="l00418"></a>00418   <span class="keyword">typedef</span> DimensionSet::value_type key_type;
<a name="l00419"></a>00419   <span class="keyword">typedef</span> <span class="keywordtype">double</span>                   mapped_type;
<a name="l00420"></a>00420   <span class="keyword">typedef</span> mapped_type              mapped_type_cref;
<a name="l00421"></a>00421 
<a name="l00423"></a><a class="code" href="a00013.html#a8523627cdc70492e5e0935b9a3a78cc4">00423</a>   <span class="keyword">const</span> <span class="keyword">static</span> mapped_type         <a class="code" href="a00013.html#a8523627cdc70492e5e0935b9a3a78cc4" title="Zero value of a Argument value.">MappedZero</a>;
<a name="l00425"></a><a class="code" href="a00013.html#a657d962a1b965814e6b2eecb07f03e80">00425</a>   <span class="keyword">const</span> <span class="keyword">static</span> mapped_type         <a class="code" href="a00013.html#a657d962a1b965814e6b2eecb07f03e80" title="One value of a Argument value.">MappedOne</a>;
<a name="l00426"></a>00426 <span class="keyword">protected</span>:
<a name="l00427"></a>00427   <span class="keyword">typedef</span> std::map&lt;key_type, mapped_type&gt; container_type;
<a name="l00428"></a>00428   <span class="keyword">typedef</span> container_type::value_type      value_type;
<a name="l00430"></a><a class="code" href="a00013.html#a69cba55a3a7e1414ba8edde37796d84e">00430</a>   simtime_t      <a class="code" href="a00013.html#a69cba55a3a7e1414ba8edde37796d84e" title="Stores the time dimension in Omnet&#39;s time type.">time</a>;
<a name="l00431"></a>00431 
<a name="l00433"></a><a class="code" href="a00013.html#a7e41277b3b57f03fbb47336c2b7439f8">00433</a>   container_type <a class="code" href="a00013.html#a7e41277b3b57f03fbb47336c2b7439f8" title="Maps the dimensions of this Argument to their values.">values</a>;
<a name="l00434"></a>00434 
<a name="l00435"></a>00435 <span class="keyword">public</span>:
<a name="l00437"></a><a class="code" href="a00013.html#a62ef6fa40b8600df45f05d0e36e6d296">00437</a>   <span class="keyword">typedef</span> container_type::iterator       <a class="code" href="a00013.html#a62ef6fa40b8600df45f05d0e36e6d296" title="Iterator type for this set.">iterator</a>;
<a name="l00439"></a><a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022">00439</a>   <span class="keyword">typedef</span> container_type::const_iterator <a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022" title="Const-iterator type for this set.">const_iterator</a>;
<a name="l00440"></a>00440 
<a name="l00441"></a>00441 <span class="keyword">protected</span>:
<a name="l00455"></a>00455   <span class="keyword">inline</span> <a class="code" href="a00013.html#a62ef6fa40b8600df45f05d0e36e6d296" title="Iterator type for this set.">iterator</a> insertValue(<a class="code" href="a00013.html#a62ef6fa40b8600df45f05d0e36e6d296" title="Iterator type for this set.">iterator</a> pos, <span class="keyword">const</span> Argument::value_type&amp; valPair, <a class="code" href="a00013.html#a62ef6fa40b8600df45f05d0e36e6d296" title="Iterator type for this set.">iterator</a>&amp; itEnd, <span class="keywordtype">bool</span> ignoreUnknown = <span class="keyword">false</span>);
<a name="l00456"></a>00456 
<a name="l00457"></a>00457   <span class="keyword">template</span>&lt;<span class="keyword">typename</span> IteratorType&gt;
<a name="l00458"></a><a class="code" href="a00116.html">00458</a>   <span class="keyword">class </span><a class="code" href="a00116.html">key_iterator</a> : <span class="keyword">public</span> IteratorType
<a name="l00459"></a>00459   {
<a name="l00460"></a>00460   <span class="keyword">public</span>:
<a name="l00461"></a>00461       <span class="keyword">typedef</span> <span class="keyword">typename</span> IteratorType::value_type::first_type&amp; reference;
<a name="l00462"></a>00462       <span class="keyword">typedef</span> <span class="keyword">typename</span> IteratorType::value_type::first_type* pointer;
<a name="l00463"></a>00463 
<a name="l00464"></a>00464       <a class="code" href="a00116.html">key_iterator</a>(<span class="keyword">const</span> IteratorType&amp; other) : IteratorType(other) {} ;
<a name="l00465"></a>00465 
<a name="l00466"></a>00466       <span class="keyword">const</span> reference operator *()<span class="keyword"> const</span>
<a name="l00467"></a>00467 <span class="keyword">      </span>{
<a name="l00468"></a>00468           <span class="keywordflow">return</span> IteratorType::operator*().first;
<a name="l00469"></a>00469       }
<a name="l00470"></a>00470       pointer operator -&gt;()<span class="keyword"> const</span>
<a name="l00471"></a>00471 <span class="keyword">      </span>{
<a name="l00472"></a>00472           <span class="keywordflow">return</span> &amp;IteratorType::operator-&gt;()-&gt;first;
<a name="l00473"></a>00473       }
<a name="l00474"></a>00474   };
<a name="l00475"></a>00475 <span class="keyword">public</span>:
<a name="l00480"></a>00480   <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>(simtime_t_cref timeVal = SIMTIME_ZERO);
<a name="l00481"></a>00481 
<a name="l00487"></a>00487   <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; dims, simtime_t_cref timeVal = SIMTIME_ZERO);
<a name="l00488"></a>00488 
<a name="l00492"></a>00492   simtime_t_cref getTime() <span class="keyword">const</span>;
<a name="l00493"></a>00493 
<a name="l00497"></a>00497   <span class="keywordtype">void</span> setTime(simtime_t_cref time);
<a name="l00498"></a>00498 
<a name="l00503"></a>00503   <span class="keywordtype">bool</span> hasArgVal(<span class="keyword">const</span> Argument::key_type&amp; dim) <span class="keyword">const</span>;
<a name="l00504"></a>00504 
<a name="l00514"></a>00514   mapped_type_cref getArgValue(<span class="keyword">const</span> Argument::key_type&amp; dim) <span class="keyword">const</span>;
<a name="l00515"></a>00515 
<a name="l00525"></a>00525   <span class="keywordtype">void</span> setArgValue(<span class="keyword">const</span> Argument::key_type&amp; dim, Argument::mapped_type_cref value);
<a name="l00526"></a>00526 
<a name="l00537"></a>00537   <span class="keywordtype">void</span> setArgValues(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; o, <span class="keywordtype">bool</span> ignoreUnknown = <span class="keyword">false</span>);
<a name="l00538"></a>00538 
<a name="l00549"></a>00549   <span class="keywordtype">bool</span> isSamePosition(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; other) <span class="keyword">const</span>;
<a name="l00550"></a>00550 
<a name="l00555"></a>00555   <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; o) <span class="keyword">const</span>;
<a name="l00556"></a>00556 
<a name="l00562"></a>00562   <span class="keywordtype">bool</span> isClose(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; o, Argument::mapped_type_cref epsilon = Argument::mapped_type(0.000001)) <span class="keyword">const</span>;
<a name="l00563"></a>00563 
<a name="l00577"></a>00577   <span class="keywordtype">bool</span> operator&lt;(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; o) <span class="keyword">const</span>;
<a name="l00578"></a>00578 
<a name="l00590"></a>00590   <span class="keywordtype">int</span> compare(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; o, <span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> *<span class="keyword">const</span> dims = NULL) <span class="keyword">const</span>;
<a name="l00591"></a>00591 
<a name="l00599"></a><a class="code" href="a00013.html#a8b3fcda23d2eec4e931126d261e4b194">00599</a>   <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> <a class="code" href="a00013.html#a8b3fcda23d2eec4e931126d261e4b194" title="Returns the dimensions this argument is defined over.">getDimensions</a>()<span class="keyword"> const </span>{
<a name="l00600"></a>00600     <span class="keyword">typedef</span> <a class="code" href="a00116.html">key_iterator&lt;const_iterator&gt;</a> key_const_iterator;
<a name="l00601"></a>00601 
<a name="l00602"></a>00602     <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> res(<a class="code" href="a00085.html#a16cb1f186dd3f48d33a4aebe948001d7" title="Shortcut to the time Dimension, same as &#39;Dimension(&quot;time&quot;)&#39;, but spares the parsing of a string...">Dimension::time</a>);
<a name="l00603"></a>00603 
<a name="l00604"></a>00604     res.<a class="code" href="a00086.html#a692159c06427648fbd09f0cd879b3ec7" title="A template function that attempts to insert a range of elements.">insert</a>(key_const_iterator(values.begin()), key_const_iterator(values.end()));
<a name="l00605"></a>00605 
<a name="l00606"></a>00606     <span class="keywordflow">return</span> res;
<a name="l00607"></a>00607   }
<a name="l00608"></a>00608 
<a name="l00614"></a><a class="code" href="a00013.html#a7eb8c897281544d904f4a45de93a5cf9">00614</a>   <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="a00013.html#a7eb8c897281544d904f4a45de93a5cf9" title="Output operator for Arguments.">operator&lt;&lt;</a>(std::ostream&amp; out, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; d) {
<a name="l00615"></a>00615     <span class="keyword">using</span> std::operator&lt;&lt;;
<a name="l00616"></a>00616 
<a name="l00617"></a>00617     out &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; d.<a class="code" href="a00013.html#a69cba55a3a7e1414ba8edde37796d84e" title="Stores the time dimension in Omnet&#39;s time type.">time</a>;
<a name="l00618"></a>00618 
<a name="l00619"></a>00619     <span class="keywordflow">for</span> (<a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022" title="Const-iterator type for this set.">const_iterator</a> it = d.<a class="code" href="a00013.html#af0e836fd4aaecc1461b994e21f66ddc3" title="Returns an iterator to the first argument value in this Argument.">begin</a>(); it != d.<a class="code" href="a00013.html#aeeb6730c20ae8a8d6c9606f2e03cc1da" title="Returns an iterator to the value behind the last argument value.">end</a>(); ++it) {
<a name="l00620"></a>00620       out &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; it-&gt;second &lt;&lt; <span class="stringliteral">&quot;@&quot;</span> &lt;&lt; it-&gt;first;
<a name="l00621"></a>00621     }
<a name="l00622"></a>00622       <span class="keywordflow">return</span> (out &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>);
<a name="l00623"></a>00623     }
<a name="l00624"></a>00624 
<a name="l00629"></a>00629   <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; o);
<a name="l00630"></a>00630 
<a name="l00634"></a><a class="code" href="a00013.html#af0e836fd4aaecc1461b994e21f66ddc3">00634</a>   <a class="code" href="a00013.html#a62ef6fa40b8600df45f05d0e36e6d296" title="Iterator type for this set.">iterator</a> <a class="code" href="a00013.html#af0e836fd4aaecc1461b994e21f66ddc3" title="Returns an iterator to the first argument value in this Argument.">begin</a>() { <span class="keywordflow">return</span> values.begin(); }
<a name="l00638"></a><a class="code" href="a00013.html#a493bcd3b014d9bc09f5b0a5093797136">00638</a>   <a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022" title="Const-iterator type for this set.">const_iterator</a> <a class="code" href="a00013.html#a493bcd3b014d9bc09f5b0a5093797136" title="Returns an iterator to the first argument value in this Argument.">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> values.begin(); }
<a name="l00639"></a>00639 
<a name="l00640"></a>00640 
<a name="l00644"></a><a class="code" href="a00013.html#aeeb6730c20ae8a8d6c9606f2e03cc1da">00644</a>   <a class="code" href="a00013.html#a62ef6fa40b8600df45f05d0e36e6d296" title="Iterator type for this set.">iterator</a> <a class="code" href="a00013.html#aeeb6730c20ae8a8d6c9606f2e03cc1da" title="Returns an iterator to the value behind the last argument value.">end</a>() { <span class="keywordflow">return</span> values.end(); }
<a name="l00648"></a><a class="code" href="a00013.html#a839f872b871bcce52fa4179b0e8ee0a7">00648</a>   <a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022" title="Const-iterator type for this set.">const_iterator</a> <a class="code" href="a00013.html#a839f872b871bcce52fa4179b0e8ee0a7" title="Returns an iterator to the value behind the last argument value.">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> values.end(); }
<a name="l00649"></a>00649 
<a name="l00655"></a>00655   iterator find(<span class="keyword">const</span> Argument::key_type&amp; dim);
<a name="l00661"></a>00661   const_iterator find(<span class="keyword">const</span> Argument::key_type&amp; dim) <span class="keyword">const</span>;
<a name="l00662"></a>00662 
<a name="l00667"></a>00667   iterator lower_bound(<span class="keyword">const</span> Argument::key_type&amp; dim);
<a name="l00672"></a>00672   const_iterator lower_bound(<span class="keyword">const</span> Argument::key_type&amp; dim) <span class="keyword">const</span>;
<a name="l00673"></a>00673 };
<a name="l00674"></a>00674 
<a name="l00686"></a><a class="code" href="a00163.html">00686</a> <span class="keyword">class </span><a class="code" href="a00163.html" title="This exception is thrown by the MappingIterators when &quot;next()&quot; or &quot;nextPosition()&quot; is called although...">NoNextIteratorException</a> {};
<a name="l00687"></a>00687 
<a name="l00708"></a><a class="code" href="a00059.html">00708</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a> {
<a name="l00709"></a>00709 <span class="keyword">public</span>:
<a name="l00710"></a>00710   <span class="keyword">typedef</span> Argument::mapped_type      argument_value_t;
<a name="l00711"></a>00711   <span class="keyword">typedef</span> Argument::mapped_type_cref argument_value_cref_t;
<a name="l00712"></a>00712 <span class="keyword">public</span>:
<a name="l00713"></a>00713   <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>() {}
<a name="l00714"></a>00714   <span class="keyword">virtual</span> ~<a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>() {}
<a name="l00715"></a>00715 
<a name="l00719"></a><a class="code" href="a00059.html#a9b4d3e2619eb1760fffc33221c1c9d79">00719</a>   <a class="code" href="a00059.html#a9b4d3e2619eb1760fffc33221c1c9d79" title="Copy constructor.">ConstMappingIterator</a>(<span class="keyword">const</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>&amp;) {}
<a name="l00720"></a>00720 
<a name="l00727"></a><a class="code" href="a00059.html#a7518b144224ce8cacd2f2aae17501b5f">00727</a>   <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>&amp; <a class="code" href="a00059.html#a7518b144224ce8cacd2f2aae17501b5f" title="ConstMappingIterator assignment operator.">operator=</a>(<span class="keyword">const</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>&amp;) {<span class="keywordflow">return</span> *<span class="keyword">this</span>;}
<a name="l00728"></a>00728 
<a name="l00737"></a><a class="code" href="a00059.html#a4cb323064796469812f479431b111627">00737</a>   <span class="keywordtype">void</span> <a class="code" href="a00059.html#a4cb323064796469812f479431b111627" title="Swaps data with another ConstMappingIterator.">swap</a>(<a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>&amp;) {}
<a name="l00738"></a>00738 
<a name="l00743"></a>00743   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; getNextPosition() <span class="keyword">const</span> = 0;
<a name="l00744"></a>00744 
<a name="l00750"></a>00750   <span class="keyword">virtual</span> <span class="keywordtype">void</span> jumpTo(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos) = 0;
<a name="l00751"></a>00751 
<a name="l00760"></a>00760   <span class="keyword">virtual</span> <span class="keywordtype">void</span> jumpToBegin() = 0;
<a name="l00761"></a>00761 
<a name="l00768"></a>00768   <span class="keyword">virtual</span> <span class="keywordtype">void</span> iterateTo(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos) = 0;
<a name="l00769"></a>00769 
<a name="l00777"></a>00777   <span class="keyword">virtual</span> <span class="keywordtype">void</span> next() = 0;
<a name="l00778"></a>00778 
<a name="l00786"></a>00786   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> inRange() <span class="keyword">const</span> = 0;
<a name="l00787"></a>00787 
<a name="l00792"></a>00792   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasNext() <span class="keyword">const</span> = 0;
<a name="l00793"></a>00793 
<a name="l00797"></a>00797   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; getPosition() <span class="keyword">const</span> = 0;
<a name="l00798"></a>00798 
<a name="l00806"></a>00806   <span class="keyword">virtual</span> argument_value_t getValue() <span class="keyword">const</span> = 0;
<a name="l00807"></a>00807 };
<a name="l00808"></a>00808 
<a name="l00809"></a>00809 <span class="keyword">class </span><a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>;
<a name="l00810"></a>00810 
<a name="l00811"></a>00811 <span class="keyword">namespace </span>mixim { <span class="keyword">namespace </span>math {
<a name="l00812"></a>00812 
<a name="l00813"></a>00813 template&lt;typename T, bool B = std::numeric_limits&lt;T&gt;::has_infinity&gt;
<a name="l00814"></a><a class="code" href="a00150.html">00814</a> <span class="keyword">struct </span><a class="code" href="a00150.html">mW2dBm</a> {
<a name="l00815"></a>00815 };
<a name="l00816"></a>00816 
<a name="l00817"></a>00817 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;
<a name="l00818"></a><a class="code" href="a00151.html">00818</a> <span class="keyword">struct </span><a class="code" href="a00150.html">mW2dBm</a>&lt;T,false&gt; {
<a name="l00819"></a>00819   <span class="keyword">inline</span> T operator()(<span class="keyword">const</span> T&amp; mW) {
<a name="l00820"></a>00820     <span class="keywordflow">return</span> (10 * log10(mW));
<a name="l00821"></a>00821   }
<a name="l00822"></a>00822 };
<a name="l00823"></a>00823 
<a name="l00824"></a>00824 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;
<a name="l00825"></a><a class="code" href="a00152.html">00825</a> <span class="keyword">struct </span><a class="code" href="a00150.html">mW2dBm</a>&lt;T,true&gt; {
<a name="l00826"></a>00826   <span class="keyword">inline</span> T operator()(<span class="keyword">const</span> T&amp; mW) {
<a name="l00827"></a>00827     <span class="keyword">typedef</span> std::numeric_limits&lt;T&gt; tnumlimits_for_v;
<a name="l00828"></a>00828     <span class="comment">// we have possible infinity values, so that we can do some checks</span>
<a name="l00829"></a>00829     <span class="keyword">const</span> T    cInf   = tnumlimits_for_v::infinity();
<a name="l00830"></a>00830     <span class="keyword">const</span> <span class="keywordtype">bool</span> bIsInf = (mW == cInf) || (tnumlimits_for_v::is_signed ? (mW == -cInf) : <span class="keyword">false</span>);
<a name="l00831"></a>00831 
<a name="l00832"></a>00832     <span class="keywordflow">if</span> ( bIsInf ) {
<a name="l00833"></a>00833       <span class="keywordflow">return</span> mW;
<a name="l00834"></a>00834     }
<a name="l00835"></a>00835     <span class="keywordflow">return</span> (10 * log10(mW));
<a name="l00836"></a>00836   }
<a name="l00837"></a>00837 };
<a name="l00838"></a>00838 
<a name="l00839"></a>00839 };};
<a name="l00840"></a>00840 
<a name="l00852"></a><a class="code" href="a00058.html">00852</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a> {
<a name="l00853"></a>00853 <span class="keyword">public</span>:
<a name="l00854"></a>00854   <span class="keyword">typedef</span> Argument::mapped_type      argument_value_t;
<a name="l00855"></a>00855   <span class="keyword">typedef</span> Argument::mapped_type_cref argument_value_cref_t;
<a name="l00856"></a>00856 
<a name="l00857"></a>00857 <span class="keyword">protected</span>:
<a name="l00859"></a><a class="code" href="a00058.html#a009539b72014b7bed96402a5c244fca5">00859</a>   <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a> <a class="code" href="a00058.html#a009539b72014b7bed96402a5c244fca5" title="The dimensions of this mappings domain.">dimensions</a>;
<a name="l00860"></a>00860 
<a name="l00861"></a>00861 <span class="keyword">public</span>:
<a name="l00868"></a><a class="code" href="a00058.html#a28a66ff19a5046d773d6f0c49f12353f">00868</a>   <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>&amp; copy)
<a name="l00869"></a>00869   {
<a name="l00870"></a>00870     dimensions = copy.<a class="code" href="a00058.html#a009539b72014b7bed96402a5c244fca5" title="The dimensions of this mappings domain.">dimensions</a>;
<a name="l00871"></a>00871     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00872"></a>00872   }
<a name="l00873"></a>00873 
<a name="l00882"></a><a class="code" href="a00058.html#a473df8fa0aa441ca1adb356b17b1f59f">00882</a>   <span class="keywordtype">void</span> swap(<a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>&amp; s)
<a name="l00883"></a>00883   {
<a name="l00884"></a>00884     <span class="comment">//::swap(s); // swap the base class members</span>
<a name="l00885"></a>00885     <span class="comment">/* Swap all D members */</span>
<a name="l00886"></a>00886     dimensions.<a class="code" href="a00086.html#ac1230bce09abeef30d87519bf03b3167" title="Swaps data with another DimensionSet.">swap</a>(s.<a class="code" href="a00058.html#a009539b72014b7bed96402a5c244fca5" title="The dimensions of this mappings domain.">dimensions</a>);
<a name="l00887"></a>00887   }
<a name="l00888"></a>00888 
<a name="l00889"></a>00889 <span class="keyword">private</span>:
<a name="l00890"></a>00890   <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
<a name="l00891"></a>00891   std::string toString(T v, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)<span class="keyword"> const </span>{
<a name="l00892"></a>00892     std::stringstream osToStr(std::stringstream::out);
<a name="l00893"></a>00893 
<a name="l00894"></a>00894     <span class="keyword">using</span> std::operator&lt;&lt;;
<a name="l00895"></a>00895 
<a name="l00896"></a>00896     osToStr &lt;&lt; std::fixed; osToStr.precision(2); osToStr.width(length);
<a name="l00897"></a>00897     osToStr &lt;&lt; std::right &lt;&lt; v;
<a name="l00898"></a>00898 
<a name="l00899"></a>00899     <span class="keywordflow">return</span> osToStr.str();
<a name="l00900"></a>00900   }
<a name="l00901"></a>00901 
<a name="l00902"></a>00902   std::string toString(simtime_t_cref v, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)<span class="keyword"> const </span>{
<a name="l00903"></a>00903     <span class="keywordflow">return</span> toString(SIMTIME_DBL(v), length);
<a name="l00904"></a>00904   }
<a name="l00905"></a>00905 
<a name="l00906"></a>00906 <span class="keyword">public</span>:
<a name="l00907"></a>00907 
<a name="l00911"></a><a class="code" href="a00058.html#a7cfc5de32a0d03abfeb9b77fdcf7a413">00911</a>   <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>():
<a name="l00912"></a>00912     dimensions(<a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a>::time) {}
<a name="l00913"></a>00913   <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(<span class="keyword">const</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>&amp; o):
<a name="l00914"></a>00914     dimensions(o.dimensions) {}
<a name="l00915"></a>00915 
<a name="l00922"></a><a class="code" href="a00058.html#a4e057daa0a3726cafa70bac0e5393b26">00922</a>   <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; dimSet):
<a name="l00923"></a>00923     dimensions(dimSet) {
<a name="l00924"></a>00924 
<a name="l00925"></a>00925     assert(dimSet.<a class="code" href="a00086.html#a015cb6fa6c77b26b8c7b1e65827b8342" title="Returns true if the passed Dimension is inside this DimensionSet.">hasDimension</a>(<a class="code" href="a00085.html#a16cb1f186dd3f48d33a4aebe948001d7" title="Shortcut to the time Dimension, same as &#39;Dimension(&quot;time&quot;)&#39;, but spares the parsing of a string...">Dimension::time</a>));
<a name="l00926"></a>00926   }
<a name="l00927"></a>00927 
<a name="l00928"></a>00928   <span class="keyword">virtual</span> ~<a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>() {}
<a name="l00929"></a>00929 
<a name="l00936"></a>00936   <span class="keyword">virtual</span> argument_value_t getValue(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos) <span class="keyword">const</span> = 0;
<a name="l00937"></a>00937 
<a name="l00944"></a>00944   <span class="keyword">virtual</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>* createConstIterator() <span class="keyword">const</span> = 0;
<a name="l00945"></a>00945 
<a name="l00952"></a>00952   <span class="keyword">virtual</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>* createConstIterator(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos) <span class="keyword">const</span> = 0;
<a name="l00953"></a>00953 
<a name="l00957"></a>00957   <span class="keyword">virtual</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>* constClone() <span class="keyword">const</span> = 0;
<a name="l00958"></a>00958 
<a name="l00963"></a><a class="code" href="a00058.html#a9b0ba6e7aaa108549dcd71069fefe199">00963</a>   argument_value_t <a class="code" href="a00058.html#a9b0ba6e7aaa108549dcd71069fefe199" title="Returns the value of this Mapping at the position specified by the passed Argument.">operator[]</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos)<span class="keyword"> const </span>{
<a name="l00964"></a>00964     <span class="keywordflow">return</span> getValue(pos);
<a name="l00965"></a>00965   }
<a name="l00966"></a>00966 
<a name="l00970"></a><a class="code" href="a00058.html#acc1559cf5741bec3aa6422e94c5b9cce">00970</a>   <span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; <a class="code" href="a00058.html#acc1559cf5741bec3aa6422e94c5b9cce" title="Returns this Mappings domain as DimensionSet.">getDimensionSet</a>()<span class="keyword"> const </span>{
<a name="l00971"></a>00971     <span class="keywordflow">return</span> dimensions;
<a name="l00972"></a>00972   }
<a name="l00973"></a>00973 
<a name="l00983"></a>00983   <span class="keyword">template</span>&lt;<span class="keyword">class</span> stream&gt;
<a name="l00984"></a><a class="code" href="a00058.html#a526e8d5b948e9b2ce9d729e66b162e13">00984</a>   stream&amp; print(stream&amp;                out,
<a name="l00985"></a>00985                 argument_value_cref_t  lTimeScale    = argument_value_t(1000),
<a name="l00986"></a>00986                 argument_value_cref_t  lLeftColScale = <a class="code" href="a00013.html#a657d962a1b965814e6b2eecb07f03e80" title="One value of a Argument value.">Argument::MappedOne</a>,
<a name="l00987"></a>00987                 <span class="keyword">const</span> std::string&amp;     sTableHead    = std::string(<span class="stringliteral">&quot;o\\ms&quot;</span>),
<a name="l00988"></a>00988                 <span class="keyword">const</span> <a class="code" href="a00085.html" title="Specifies a dimension for mappings (like time, frequency, etc.)">Dimension</a> *<span class="keyword">const</span> pOnlyDim      = NULL)<span class="keyword"> const </span>{
<a name="l00989"></a>00989     <span class="keyword">const</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>&amp;      m = *<span class="keyword">this</span>;
<a name="l00990"></a>00990     DimensionSet::value_type otherDim;
<a name="l00991"></a>00991     <span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp;      dims = m.<a class="code" href="a00058.html#acc1559cf5741bec3aa6422e94c5b9cce" title="Returns this Mappings domain as DimensionSet.">getDimensionSet</a>();
<a name="l00992"></a>00992     <span class="keywordtype">bool</span>                     bOnlyDimFound = <span class="keyword">false</span>;
<a name="l00993"></a>00993 
<a name="l00994"></a>00994     <span class="keyword">using</span> std::operator&lt;&lt;;
<a name="l00995"></a>00995 
<a name="l00996"></a>00996     std::stringstream            osDimHead(std::stringstream::out);
<a name="l00997"></a>00997     <span class="keywordtype">bool</span>                         bTimeIsIn = <span class="keyword">false</span>;
<a name="l00998"></a>00998     <span class="keyword">const</span> DimensionSet::iterator dimsEnd   = dims.end();
<a name="l00999"></a>00999     <span class="keywordflow">for</span>(DimensionSet::iterator it = dims.begin(); it != dimsEnd; ++it) {
<a name="l01000"></a>01000       <span class="keywordflow">if</span>(*it != <a class="code" href="a00085.html#a16cb1f186dd3f48d33a4aebe948001d7" title="Shortcut to the time Dimension, same as &#39;Dimension(&quot;time&quot;)&#39;, but spares the parsing of a string...">Dimension::time</a>) {
<a name="l01001"></a>01001         <span class="keywordflow">if</span> (pOnlyDim &amp;&amp; *it == *pOnlyDim) {
<a name="l01002"></a>01002           otherDim      = *it;
<a name="l01003"></a>01003           bOnlyDimFound = pOnlyDim != NULL;
<a name="l01004"></a>01004         }
<a name="l01005"></a>01005         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!pOnlyDim) {
<a name="l01006"></a>01006           otherDim      = *it;
<a name="l01007"></a>01007         }
<a name="l01008"></a>01008         <span class="keywordflow">if</span> (!osDimHead.str().empty())
<a name="l01009"></a>01009           osDimHead &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;
<a name="l01010"></a>01010         osDimHead &lt;&lt; *it;
<a name="l01011"></a>01011       }
<a name="l01012"></a>01012       <span class="keywordflow">else</span>
<a name="l01013"></a>01013         bTimeIsIn = <span class="keyword">true</span>;
<a name="l01014"></a>01014     }
<a name="l01015"></a>01015     <span class="keywordflow">if</span> (bTimeIsIn || !osDimHead.str().empty()) {
<a name="l01016"></a>01016       out &lt;&lt; <span class="stringliteral">&quot;Mapping domain: &quot;</span>;
<a name="l01017"></a>01017       <span class="keywordflow">if</span> (bTimeIsIn) {
<a name="l01018"></a>01018         out &lt;&lt; <span class="stringliteral">&quot;time&quot;</span>;
<a name="l01019"></a>01019         <span class="keywordflow">if</span> (!osDimHead.str().empty())
<a name="l01020"></a>01020           out &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;
<a name="l01021"></a>01021       }
<a name="l01022"></a>01022       out &lt;&lt; osDimHead.str() &lt;&lt; endl;
<a name="l01023"></a>01023     }
<a name="l01024"></a>01024 
<a name="l01025"></a>01025     <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>* it = m.<a class="code" href="a00058.html#a5ff3a15fe6d536fa7a26a3fe1ff1b274" title="Returns a pointer of a new Iterator which is able to iterate over this Mapping.">createConstIterator</a>();
<a name="l01026"></a>01026 
<a name="l01027"></a>01027     <span class="keywordflow">if</span>(!it-&gt;<a class="code" href="a00059.html#a4a6348a453418da95978e570fec046fc" title="Returns true if the current position of the iterator is in range of the function.">inRange</a>()) {
<a name="l01028"></a>01028       out &lt;&lt; <span class="stringliteral">&quot;Mapping is empty.&quot;</span> &lt;&lt; endl;
<a name="l01029"></a>01029       <span class="keywordflow">return</span> out;
<a name="l01030"></a>01030     }
<a name="l01031"></a>01031 
<a name="l01032"></a>01032     <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a> min = it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>();
<a name="l01033"></a>01033     <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a> max = it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>();
<a name="l01034"></a>01034 
<a name="l01035"></a>01035     <span class="keyword">typedef</span> std::set&lt;simtime_t&gt;         t_time_container_type;
<a name="l01036"></a>01036     <span class="keyword">typedef</span> std::set&lt;argument_value_t&gt;  t_value_container_type;
<a name="l01037"></a>01037 
<a name="l01038"></a>01038     t_time_container_type  timePositions;
<a name="l01039"></a>01039     t_value_container_type otherPositions;
<a name="l01040"></a>01040     std::size_t            iMaxHeaderItemLen = m.toString(it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#a2ecb3b041b5b8721d6767531e4ac792a" title="Returns the time value of this argument.">getTime</a>() * lTimeScale, 2).length();
<a name="l01041"></a>01041     std::size_t            iMaxLeftItemLen   = 5 &gt; sTableHead.length() ? 5 : sTableHead.length();
<a name="l01042"></a>01042     <span class="keyword">const</span> <span class="keywordtype">bool</span>             bIs2Dim           = dims.<a class="code" href="a00086.html#a0bf532a8e4cbf151337d24b7246790a9" title="Returns the size of the DimensionSet.">size</a>() == 2;
<a name="l01043"></a>01043 
<a name="l01044"></a>01044     <span class="keywordflow">if</span> (bIs2Dim &amp;&amp; bOnlyDimFound)
<a name="l01045"></a>01045       bOnlyDimFound = <span class="keyword">false</span>; <span class="comment">// we have only the time and the requested dimension (fallback to normal case)</span>
<a name="l01046"></a>01046     timePositions.insert(it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#a2ecb3b041b5b8721d6767531e4ac792a" title="Returns the time value of this argument.">getTime</a>());
<a name="l01047"></a>01047     <span class="keywordflow">if</span>(bIs2Dim || bOnlyDimFound) {
<a name="l01048"></a>01048       <a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022" title="Const-iterator type for this set.">Argument::const_iterator</a> posValIt;
<a name="l01049"></a>01049       <span class="keywordflow">if</span> (bOnlyDimFound &amp;&amp; (posValIt = it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#ae4b61830a991f8911978c30a67dd2da6" title="Returns an iterator to the Argument value for the passed Dimension.">find</a>(otherDim)) != it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#aeeb6730c20ae8a8d6c9606f2e03cc1da" title="Returns an iterator to the value behind the last argument value.">end</a>()) {
<a name="l01050"></a>01050         otherPositions.insert(it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#a137a911de0281cbb519fe13727aa0813" title="Returns the value for the specified dimension.">getArgValue</a>(otherDim));
<a name="l01051"></a>01051         iMaxLeftItemLen = std::max(iMaxLeftItemLen, m.toString(posValIt-&gt;second*lLeftColScale, 2).length());
<a name="l01052"></a>01052       }
<a name="l01053"></a>01053       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!bOnlyDimFound) {
<a name="l01054"></a>01054         otherPositions.insert(it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#af0e836fd4aaecc1461b994e21f66ddc3" title="Returns an iterator to the first argument value in this Argument.">begin</a>()-&gt;second);
<a name="l01055"></a>01055         iMaxLeftItemLen = std::max(iMaxLeftItemLen, m.toString(it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#af0e836fd4aaecc1461b994e21f66ddc3" title="Returns an iterator to the first argument value in this Argument.">begin</a>()-&gt;second*lLeftColScale, 2).length());
<a name="l01056"></a>01056       }
<a name="l01057"></a>01057     }
<a name="l01058"></a>01058 
<a name="l01059"></a>01059     <span class="keywordflow">while</span>(it-&gt;<a class="code" href="a00059.html#ad4bac7233c154b7086c6124d2e21be49" title="Returns true if the iterator has a next value it can iterate to on a call to &quot;next()&quot;.">hasNext</a>()) {
<a name="l01060"></a>01060       it-&gt;<a class="code" href="a00059.html#afdafa6870cd19b3d35674a7bc777585d" title="Iterates to the next position of the Mapping.">next</a>();
<a name="l01061"></a>01061       <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp;                pos         = it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>();
<a name="l01062"></a>01062       <span class="keyword">const</span> <a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022" title="Const-iterator type for this set.">Argument::const_iterator</a> posValItEnd = pos.<a class="code" href="a00013.html#aeeb6730c20ae8a8d6c9606f2e03cc1da" title="Returns an iterator to the value behind the last argument value.">end</a>();
<a name="l01063"></a>01063       <a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022" title="Const-iterator type for this set.">Argument::const_iterator</a>       posValIt;
<a name="l01064"></a>01064 
<a name="l01065"></a>01065       min.<a class="code" href="a00013.html#a8087982f050bdc61d787b128ca9ac8f9" title="Changes the time value of this argument.">setTime</a>(std::min(min.<a class="code" href="a00013.html#a2ecb3b041b5b8721d6767531e4ac792a" title="Returns the time value of this argument.">getTime</a>(), pos.<a class="code" href="a00013.html#a2ecb3b041b5b8721d6767531e4ac792a" title="Returns the time value of this argument.">getTime</a>()));
<a name="l01066"></a>01066       max.<a class="code" href="a00013.html#a8087982f050bdc61d787b128ca9ac8f9" title="Changes the time value of this argument.">setTime</a>(std::max(max.<a class="code" href="a00013.html#a2ecb3b041b5b8721d6767531e4ac792a" title="Returns the time value of this argument.">getTime</a>(), pos.<a class="code" href="a00013.html#a2ecb3b041b5b8721d6767531e4ac792a" title="Returns the time value of this argument.">getTime</a>()));
<a name="l01067"></a>01067 
<a name="l01068"></a>01068       timePositions.insert(pos.<a class="code" href="a00013.html#a2ecb3b041b5b8721d6767531e4ac792a" title="Returns the time value of this argument.">getTime</a>());
<a name="l01069"></a>01069 
<a name="l01070"></a>01070       iMaxHeaderItemLen = std::max(iMaxHeaderItemLen, m.toString(pos.<a class="code" href="a00013.html#a2ecb3b041b5b8721d6767531e4ac792a" title="Returns the time value of this argument.">getTime</a>() * lTimeScale, 2).length());
<a name="l01071"></a>01071 
<a name="l01072"></a>01072       <span class="keywordflow">if</span> (bOnlyDimFound &amp;&amp; (posValIt = pos.<a class="code" href="a00013.html#ae4b61830a991f8911978c30a67dd2da6" title="Returns an iterator to the Argument value for the passed Dimension.">find</a>(otherDim)) != posValItEnd) {
<a name="l01073"></a>01073         iMaxLeftItemLen = std::max(iMaxLeftItemLen, m.toString(posValIt-&gt;second*lLeftColScale, 2).length());
<a name="l01074"></a>01074       }
<a name="l01075"></a>01075       <span class="keywordflow">for</span>(<a class="code" href="a00013.html#a521abc97d737e8c77742dcc9f4b21022" title="Const-iterator type for this set.">Argument::const_iterator</a> itA = pos.<a class="code" href="a00013.html#af0e836fd4aaecc1461b994e21f66ddc3" title="Returns an iterator to the first argument value in this Argument.">begin</a>(); itA != posValItEnd; ++itA) {
<a name="l01076"></a>01076         <span class="keywordflow">if</span>(bIs2Dim || bOnlyDimFound) {
<a name="l01077"></a>01077           <span class="keywordflow">if</span> (!bOnlyDimFound || itA-&gt;first == otherDim) {
<a name="l01078"></a>01078             otherPositions.insert(itA-&gt;second);
<a name="l01079"></a>01079             iMaxLeftItemLen = std::max(iMaxLeftItemLen, m.toString(itA-&gt;second*lLeftColScale, 2).length());
<a name="l01080"></a>01080           }
<a name="l01081"></a>01081         }
<a name="l01082"></a>01082         min.<a class="code" href="a00013.html#a27bd7000e865670a673039233424d2ab" title="Changes the value for the specified dimension.">setArgValue</a>(itA-&gt;first, std::min(min.<a class="code" href="a00013.html#a137a911de0281cbb519fe13727aa0813" title="Returns the value for the specified dimension.">getArgValue</a>(itA-&gt;first), itA-&gt;second));
<a name="l01083"></a>01083         max.<a class="code" href="a00013.html#a27bd7000e865670a673039233424d2ab" title="Changes the value for the specified dimension.">setArgValue</a>(itA-&gt;first, std::max(max.<a class="code" href="a00013.html#a137a911de0281cbb519fe13727aa0813" title="Returns the value for the specified dimension.">getArgValue</a>(itA-&gt;first), itA-&gt;second));
<a name="l01084"></a>01084       }
<a name="l01085"></a>01085     }
<a name="l01086"></a>01086     <span class="keyword">delete</span> it;
<a name="l01087"></a>01087 
<a name="l01088"></a>01088     <span class="keywordflow">if</span>(!bIs2Dim &amp;&amp; !bOnlyDimFound) {
<a name="l01089"></a>01089       <span class="keywordflow">if</span> (!bOnlyDimFound &amp;&amp; pOnlyDim != NULL) {
<a name="l01090"></a>01090         out &lt;&lt; <span class="stringliteral">&quot;map contains no &quot;</span> &lt;&lt; pOnlyDim-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; dimension!&quot;</span> &lt;&lt; endl;
<a name="l01091"></a>01091       }
<a name="l01092"></a>01092       <span class="keywordflow">else</span>
<a name="l01093"></a>01093         out &lt;&lt; <span class="stringliteral">&quot;domain - min=&quot;</span> &lt;&lt; min &lt;&lt; <span class="stringliteral">&quot; max=&quot;</span> &lt;&lt; max &lt;&lt; endl;
<a name="l01094"></a>01094       <span class="keywordflow">return</span> out;
<a name="l01095"></a>01095     }
<a name="l01096"></a>01096     <span class="keywordflow">if</span> (bOnlyDimFound &amp;&amp; otherPositions.empty()) {
<a name="l01097"></a>01097       out &lt;&lt; <span class="stringliteral">&quot;Defines no own key entries for &quot;</span> &lt;&lt; pOnlyDim-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; dimension! That does NOT mean it doesn&#39;t define any attenuation.&quot;</span> &lt;&lt; endl;
<a name="l01098"></a>01098       <span class="keywordflow">return</span> out;
<a name="l01099"></a>01099     }
<a name="l01100"></a>01100 
<a name="l01101"></a>01101     t_time_container_type::const_iterator       tIt;
<a name="l01102"></a>01102     <span class="keyword">const</span> t_time_container_type::const_iterator tItEnd = timePositions.<a class="code" href="a00013.html#aeeb6730c20ae8a8d6c9606f2e03cc1da" title="Returns an iterator to the value behind the last argument value.">end</a>();
<a name="l01103"></a>01103     std::stringstream                           osBorder(std::stringstream::out);
<a name="l01104"></a>01104     std::stringstream                           osHeader(std::stringstream::out);
<a name="l01105"></a>01105     <a class="code" href="a00150.html">mixim::math::mW2dBm&lt;argument_value_t&gt;</a>       fctor2dBm;
<a name="l01106"></a>01106 
<a name="l01107"></a>01107     <span class="keywordflow">for</span>(tIt = timePositions.begin(); tIt != tItEnd; ++tIt) {
<a name="l01108"></a>01108       osHeader &lt;&lt; m.toString(*tIt * 1000, iMaxHeaderItemLen) &lt;&lt; osHeader.fill();
<a name="l01109"></a>01109     }
<a name="l01110"></a>01110     osBorder.fill(<span class="charliteral">&#39;-&#39;</span>);
<a name="l01111"></a>01111     osBorder &lt;&lt; std::setw(iMaxLeftItemLen) &lt;&lt; <span class="stringliteral">&quot;&quot;</span> &lt;&lt; osBorder.fill() &lt;&lt; <span class="stringliteral">&quot;+&quot;</span> &lt;&lt; osBorder.fill() &lt;&lt; std::setw(osHeader.str().length()) &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;
<a name="l01112"></a>01112 
<a name="l01113"></a>01113     out &lt;&lt; osBorder.str() &lt;&lt; std::endl;
<a name="l01114"></a>01114     out &lt;&lt; std::setw(iMaxLeftItemLen) &lt;&lt; std::left &lt;&lt; sTableHead &lt;&lt; out.fill() &lt;&lt; <span class="stringliteral">&quot;|&quot;</span> &lt;&lt; out.fill();
<a name="l01115"></a>01115     out &lt;&lt; osHeader.str() &lt;&lt; std::endl;
<a name="l01116"></a>01116     out &lt;&lt; osBorder.str() &lt;&lt; std::endl;
<a name="l01117"></a>01117 
<a name="l01118"></a>01118     it = m.<a class="code" href="a00058.html#a5ff3a15fe6d536fa7a26a3fe1ff1b274" title="Returns a pointer of a new Iterator which is able to iterate over this Mapping.">createConstIterator</a>();
<a name="l01119"></a>01119 
<a name="l01120"></a>01120     <span class="keywordflow">if</span>(dims.<a class="code" href="a00086.html#a0bf532a8e4cbf151337d24b7246790a9" title="Returns the size of the DimensionSet.">size</a>() == 1) {
<a name="l01121"></a>01121       out &lt;&lt; std::setw(iMaxLeftItemLen) &lt;&lt; <span class="stringliteral">&quot;value&quot;</span> &lt;&lt; out.fill() &lt;&lt; <span class="stringliteral">&quot;|&quot;</span> &lt;&lt; out.fill();
<a name="l01122"></a>01122       <span class="keywordflow">while</span>(it-&gt;<a class="code" href="a00059.html#a4a6348a453418da95978e570fec046fc" title="Returns true if the current position of the iterator is in range of the function.">inRange</a>()) {
<a name="l01123"></a>01123         out &lt;&lt; m.toString(fctor2dBm(it-&gt;<a class="code" href="a00059.html#ad4419c259e747867f003d07d62d4259f" title="Returns the value of the Mapping at the current position.">getValue</a>()), iMaxHeaderItemLen) &lt;&lt; out.fill();
<a name="l01124"></a>01124         <span class="keywordflow">if</span>(!it-&gt;<a class="code" href="a00059.html#ad4bac7233c154b7086c6124d2e21be49" title="Returns true if the iterator has a next value it can iterate to on a call to &quot;next()&quot;.">hasNext</a>()) {
<a name="l01125"></a>01125           <span class="keywordflow">break</span>;
<a name="l01126"></a>01126         }
<a name="l01127"></a>01127         it-&gt;<a class="code" href="a00059.html#afdafa6870cd19b3d35674a7bc777585d" title="Iterates to the next position of the Mapping.">next</a>();
<a name="l01128"></a>01128       }
<a name="l01129"></a>01129     } <span class="keywordflow">else</span> {
<a name="l01130"></a>01130       t_value_container_type::const_iterator fIt = otherPositions.begin();
<a name="l01131"></a>01131 
<a name="l01132"></a>01132       tIt = timePositions.begin();
<a name="l01133"></a>01133       out &lt;&lt; m.toString((*fIt)*lLeftColScale, iMaxLeftItemLen) &lt;&lt; out.fill() &lt;&lt; <span class="stringliteral">&quot;|&quot;</span> &lt;&lt; out.fill();
<a name="l01134"></a>01134       <span class="keywordflow">while</span>(it-&gt;<a class="code" href="a00059.html#a4a6348a453418da95978e570fec046fc" title="Returns true if the current position of the iterator is in range of the function.">inRange</a>()) {
<a name="l01135"></a>01135         <span class="keywordflow">if</span>(*fIt != it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#a137a911de0281cbb519fe13727aa0813" title="Returns the value for the specified dimension.">getArgValue</a>(otherDim)) {
<a name="l01136"></a>01136           ++fIt;
<a name="l01137"></a>01137           out &lt;&lt; std::endl &lt;&lt; m.toString((*fIt)*lLeftColScale, iMaxLeftItemLen) &lt;&lt; out.fill() &lt;&lt; <span class="stringliteral">&quot;|&quot;</span> &lt;&lt; out.fill();
<a name="l01138"></a>01138           tIt = timePositions.begin();
<a name="l01139"></a>01139           assert(*fIt == it-&gt;<a class="code" href="a00059.html#a047e853613d5a19ff34526d0cff8fcf9" title="Returns the current position of the iterator.">getPosition</a>().<a class="code" href="a00013.html#a137a911de0281cbb519fe13727aa0813" title="Returns the value for the specified dimension.">getArgValue</a>(otherDim));
<a name="l01140"></a>01140         }
<a name="l01141"></a>01141 
<a name="l01142"></a>01142         <span class="keywordflow">while</span>( tIt != tItEnd &amp;&amp; *tIt &lt; it-&gt;getPosition().getTime() ) {
<a name="l01143"></a>01143           <span class="comment">// blank item because the header time does not match</span>
<a name="l01144"></a>01144           ++tIt;
<a name="l01145"></a>01145           out &lt;&lt; std::setw(iMaxHeaderItemLen+1) &lt;&lt; <span class="stringliteral">&quot;&quot;</span>;
<a name="l01146"></a>01146         }
<a name="l01147"></a>01147         <span class="keywordflow">if</span> ( tIt != tItEnd ) {
<a name="l01148"></a>01148           <span class="comment">// jump to next header item</span>
<a name="l01149"></a>01149           ++tIt;
<a name="l01150"></a>01150         }
<a name="l01151"></a>01151 
<a name="l01152"></a>01152         out &lt;&lt; m.toString(fctor2dBm(it-&gt;<a class="code" href="a00059.html#ad4419c259e747867f003d07d62d4259f" title="Returns the value of the Mapping at the current position.">getValue</a>()), iMaxHeaderItemLen) &lt;&lt; out.fill();
<a name="l01153"></a>01153 
<a name="l01154"></a>01154         <span class="keywordflow">if</span>(!it-&gt;<a class="code" href="a00059.html#ad4bac7233c154b7086c6124d2e21be49" title="Returns true if the iterator has a next value it can iterate to on a call to &quot;next()&quot;.">hasNext</a>()) {
<a name="l01155"></a>01155           <span class="keywordflow">break</span>;
<a name="l01156"></a>01156         }
<a name="l01157"></a>01157         it-&gt;<a class="code" href="a00059.html#afdafa6870cd19b3d35674a7bc777585d" title="Iterates to the next position of the Mapping.">next</a>();
<a name="l01158"></a>01158       }
<a name="l01159"></a>01159     }
<a name="l01160"></a>01160     out &lt;&lt; std::endl &lt;&lt; osBorder.str() &lt;&lt; std::endl;
<a name="l01161"></a>01161     <span class="keywordflow">return</span> out;
<a name="l01162"></a>01162   }
<a name="l01163"></a>01163   <span class="keyword">friend</span> std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, <span class="keyword">const</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>&amp; rMapToPrint) {
<a name="l01164"></a>01164     <span class="keywordflow">return</span> rMapToPrint.<a class="code" href="a00058.html#a526e8d5b948e9b2ce9d729e66b162e13" title="Prints the Mapping to an output stream.">print</a>(out);
<a name="l01165"></a>01165   }
<a name="l01166"></a>01166 };
<a name="l01167"></a>01167 
<a name="l01168"></a>01168 
<a name="l01182"></a><a class="code" href="a00137.html">01182</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00137.html" title="Defines an iterator for a Mapping which is able to iterate over the Mapping.">MappingIterator</a>:<span class="keyword">public</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a> {
<a name="l01183"></a>01183 <span class="keyword">public</span>:
<a name="l01184"></a>01184   <a class="code" href="a00137.html" title="Defines an iterator for a Mapping which is able to iterate over the Mapping.">MappingIterator</a>() : <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>() {}
<a name="l01185"></a>01185 
<a name="l01186"></a>01186   <span class="keyword">virtual</span> ~<a class="code" href="a00137.html" title="Defines an iterator for a Mapping which is able to iterate over the Mapping.">MappingIterator</a>() {}
<a name="l01194"></a>01194   <span class="keyword">virtual</span> <span class="keywordtype">void</span> setValue(argument_value_cref_t value) = 0;
<a name="l01195"></a>01195 };
<a name="l01196"></a>01196 
<a name="l01197"></a>01197 
<a name="l01209"></a><a class="code" href="a00136.html">01209</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>:<span class="keyword">public</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a> {
<a name="l01210"></a>01210 <span class="keyword">public</span>:
<a name="l01212"></a><a class="code" href="a00136.html#aa713c0cd84f74727888bef5b9e8b0643">01212</a>   <span class="keyword">enum</span> <a class="code" href="a00136.html#aa713c0cd84f74727888bef5b9e8b0643" title="Types of interpolation methods for mappings.">InterpolationMethod</a> {
<a name="l01214"></a><a class="code" href="a00136.html#aa713c0cd84f74727888bef5b9e8b0643a14b1d21bd98ca6e7e77dca120dd5eb0f">01214</a>     <a class="code" href="a00136.html#aa713c0cd84f74727888bef5b9e8b0643a14b1d21bd98ca6e7e77dca120dd5eb0f" title="interpolates with next lower entry">STEPS</a>,
<a name="l01216"></a><a class="code" href="a00136.html#aa713c0cd84f74727888bef5b9e8b0643afc951c0875bda3e7b8f6a9f7d4e90d01">01216</a>     <a class="code" href="a00136.html#aa713c0cd84f74727888bef5b9e8b0643afc951c0875bda3e7b8f6a9f7d4e90d01" title="interpolates with nearest entry">NEAREST</a>,
<a name="l01219"></a><a class="code" href="a00136.html#aa713c0cd84f74727888bef5b9e8b0643ac8a952576b8d13258ba0f3c0f1584f9b">01219</a>     LINEAR
<a name="l01220"></a>01220   };
<a name="l01221"></a>01221 
<a name="l01222"></a>01222 <span class="keyword">public</span>:
<a name="l01229"></a><a class="code" href="a00136.html#a973f72ed384d6cead14f23d20bafee93">01229</a>   <a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>&amp; <a class="code" href="a00058.html#a28a66ff19a5046d773d6f0c49f12353f" title="ConstMapping assignment operator.">operator=</a>(<span class="keyword">const</span> <a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>&amp; copy)
<a name="l01230"></a>01230   {
<a name="l01231"></a>01231     <a class="code" href="a00058.html#a28a66ff19a5046d773d6f0c49f12353f" title="ConstMapping assignment operator.">ConstMapping::operator=</a>(copy);
<a name="l01232"></a>01232     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l01233"></a>01233   }
<a name="l01242"></a><a class="code" href="a00136.html#a4aaa0e0cce7a366dee7b5be53595a74f">01242</a>   <span class="keywordtype">void</span> <a class="code" href="a00058.html#a473df8fa0aa441ca1adb356b17b1f59f" title="Swaps data with another ConstMapping.">swap</a>(<a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>&amp; s)
<a name="l01243"></a>01243   {
<a name="l01244"></a>01244     <a class="code" href="a00058.html#a473df8fa0aa441ca1adb356b17b1f59f" title="Swaps data with another ConstMapping.">ConstMapping::swap</a>(s); <span class="comment">// swap the base class members</span>
<a name="l01245"></a>01245     <span class="comment">/* Swap all D members */</span>
<a name="l01246"></a>01246   }
<a name="l01247"></a>01247 
<a name="l01248"></a>01248 <span class="keyword">public</span>:
<a name="l01249"></a>01249 
<a name="l01255"></a><a class="code" href="a00136.html#ab21dd4d22496e6b5dc34b8b6a55553b1">01255</a>   <a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; dims):
<a name="l01256"></a>01256     <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(dims) {}
<a name="l01257"></a>01257 
<a name="l01261"></a><a class="code" href="a00136.html#a4d721f5e319fdcf56b4285d1368795d1">01261</a>   <a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>():
<a name="l01262"></a>01262     <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>() {}
<a name="l01263"></a>01263 
<a name="l01264"></a>01264   <a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>(<span class="keyword">const</span> <a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>&amp; o):
<a name="l01265"></a>01265     <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(o) {}
<a name="l01266"></a>01266 
<a name="l01267"></a>01267   <span class="keyword">virtual</span> ~<a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>() {}
<a name="l01268"></a>01268 
<a name="l01275"></a>01275   <span class="keyword">virtual</span> <span class="keywordtype">void</span> setValue(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos, argument_value_cref_t value) = 0;
<a name="l01276"></a>01276 
<a name="l01290"></a><a class="code" href="a00136.html#a2a63bc33cabcddf8c0f5938afd2e3328">01290</a>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00136.html#a2a63bc33cabcddf8c0f5938afd2e3328" title="Appends the passed value at the passed position to the mapping. This method assumes that the passed p...">appendValue</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos, argument_value_cref_t value) {
<a name="l01291"></a>01291     setValue(pos, value);
<a name="l01292"></a>01292   }
<a name="l01293"></a>01293 
<a name="l01298"></a>01298   <span class="keyword">virtual</span> <a class="code" href="a00137.html" title="Defines an iterator for a Mapping which is able to iterate over the Mapping.">MappingIterator</a>* createIterator() = 0;
<a name="l01299"></a>01299 
<a name="l01306"></a>01306   <span class="keyword">virtual</span> <a class="code" href="a00137.html" title="Defines an iterator for a Mapping which is able to iterate over the Mapping.">MappingIterator</a>* createIterator(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos) = 0;
<a name="l01307"></a>01307 
<a name="l01314"></a><a class="code" href="a00136.html#acdf62aed4b8a469e63c036e75567c2e3">01314</a>   <span class="keyword">virtual</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>* <a class="code" href="a00136.html#acdf62aed4b8a469e63c036e75567c2e3" title="Returns an ConstMappingIterator by use of the respective implementation of the &quot;createIterator()&quot;-met...">createConstIterator</a>()<span class="keyword"> const </span>{
<a name="l01315"></a>01315     <span class="keywordflow">return</span> <span class="keyword">dynamic_cast&lt;</span><a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>*<span class="keyword">&gt;</span>( <span class="keyword">const_cast&lt;</span><a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;createIterator() );
<a name="l01316"></a>01316   }
<a name="l01317"></a>01317 
<a name="l01324"></a><a class="code" href="a00136.html#aa659ff5ecd1020261cbd39d136ea1f57">01324</a>   <span class="keyword">virtual</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>* <a class="code" href="a00136.html#aa659ff5ecd1020261cbd39d136ea1f57" title="Returns an ConstMappingIterator by use of the respective implementation of the &quot;createIterator()&quot;-met...">createConstIterator</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos)<span class="keyword"> const </span>{
<a name="l01325"></a>01325     <span class="keywordflow">return</span> <span class="keyword">dynamic_cast&lt;</span><a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>*<span class="keyword">&gt;</span>( <span class="keyword">const_cast&lt;</span><a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;createIterator(pos) );
<a name="l01326"></a>01326   }
<a name="l01327"></a>01327 
<a name="l01331"></a>01331   <span class="keyword">virtual</span> <a class="code" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>* clone() <span class="keyword">const</span> = 0;
<a name="l01332"></a>01332 
<a name="l01337"></a><a class="code" href="a00136.html#afcd49c5a61e13dfa6041531540a252be">01337</a>   <span class="keyword">virtual</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>* <a class="code" href="a00136.html#afcd49c5a61e13dfa6041531540a252be" title="Returns a deep const copy of this mapping by using the according &quot;clone()&quot;-implementation.">constClone</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> clone(); }
<a name="l01338"></a>01338 
<a name="l01339"></a>01339 
<a name="l01340"></a>01340 };
<a name="l01341"></a>01341 
<a name="l01342"></a>01342 
<a name="l01343"></a>01343 <span class="comment">//###################################################################################</span>
<a name="l01344"></a>01344 <span class="comment">//#                     default Mapping implementations                              #</span>
<a name="l01345"></a>01345 <span class="comment">//###################################################################################</span>
<a name="l01346"></a>01346 
<a name="l01362"></a><a class="code" href="a00195.html">01362</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>:<span class="keyword">public</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a> {
<a name="l01363"></a>01363 <span class="keyword">protected</span>:
<a name="l01365"></a><a class="code" href="a00195.html#acd382b24005d9a14b143b6efd5922eb5">01365</a>   <span class="keyword">typedef</span> std::set&lt;Argument&gt;       <a class="code" href="a00195.html#acd382b24005d9a14b143b6efd5922eb5" title="Type for a set of Arguments defining key entries.">KeyEntrySet</a>;
<a name="l01367"></a><a class="code" href="a00195.html#a54ae3def7249f54515c6683ba554ccf5">01367</a>   <span class="keyword">typedef</span> KeyEntrySet::value_type  <a class="code" href="a00195.html#a54ae3def7249f54515c6683ba554ccf5" title="Type of a key entries item.">KeyEntryType</a>;
<a name="l01368"></a>01368 
<a name="l01370"></a><a class="code" href="a00195.html#a0e0ea2154862ca3e6b35c393e87849fc">01370</a>   <span class="keyword">const</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a> *<span class="keyword">const</span>   <a class="code" href="a00195.html#a0e0ea2154862ca3e6b35c393e87849fc" title="The underlying ConstMapping to iterate over.">mapping</a>;
<a name="l01371"></a>01371 
<a name="l01373"></a><a class="code" href="a00195.html#a5600a3c00abb82f8fda8ceb84b13530b">01373</a>   <span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp;         <a class="code" href="a00195.html#a5600a3c00abb82f8fda8ceb84b13530b" title="The dimensions of the underlying ConstMapping.">dimensions</a>;
<a name="l01374"></a>01374 
<a name="l01376"></a><a class="code" href="a00195.html#a7b29cea82195fd2084e4f63606aeb506">01376</a>   <a class="code" href="a00195.html#a54ae3def7249f54515c6683ba554ccf5" title="Type of a key entries item.">KeyEntryType</a>                <a class="code" href="a00195.html#a7b29cea82195fd2084e4f63606aeb506" title="The current position of the iterator.">position</a>;
<a name="l01377"></a>01377 
<a name="l01381"></a><a class="code" href="a00195.html#a55107a3430801eefc9c6130995f7e98a">01381</a>   <span class="keyword">const</span> <a class="code" href="a00195.html#acd382b24005d9a14b143b6efd5922eb5" title="Type for a set of Arguments defining key entries.">KeyEntrySet</a>*          <a class="code" href="a00195.html#a55107a3430801eefc9c6130995f7e98a" title="A pointer to a set of Arguments defining the positions to iterate over.">keyEntries</a>;
<a name="l01382"></a>01382 
<a name="l01385"></a><a class="code" href="a00195.html#a4e274fc2e3dc1900b7c210509fc34513">01385</a>   KeyEntrySet::const_iterator <a class="code" href="a00195.html#a4e274fc2e3dc1900b7c210509fc34513" title="An iterator over the key entry set which defines the next bigger entry of the current position...">nextEntry</a>;
<a name="l01386"></a>01386 
<a name="l01387"></a>01387 <span class="keyword">private</span>:
<a name="l01390"></a>01390   <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>(<span class="keyword">const</span> <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>&amp;);
<a name="l01393"></a>01393   <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>&amp; <a class="code" href="a00059.html#a7518b144224ce8cacd2f2aae17501b5f" title="ConstMappingIterator assignment operator.">operator=</a>(<span class="keyword">const</span> <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>&amp;);
<a name="l01394"></a>01394 
<a name="l01395"></a>01395 <span class="keyword">public</span>:
<a name="l01404"></a>01404   <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>(<span class="keyword">const</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>*                            mapping,
<a name="l01405"></a>01405                              <span class="keyword">const</span> <a class="code" href="a00195.html#acd382b24005d9a14b143b6efd5922eb5" title="Type for a set of Arguments defining key entries.">SimpleConstMappingIterator::KeyEntrySet</a>* keyEntries,
<a name="l01406"></a>01406                              <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp;                                start);
<a name="l01407"></a>01407 
<a name="l01415"></a>01415   <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>(<span class="keyword">const</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>*                            mapping,
<a name="l01416"></a>01416                              <span class="keyword">const</span> <a class="code" href="a00195.html#acd382b24005d9a14b143b6efd5922eb5" title="Type for a set of Arguments defining key entries.">SimpleConstMappingIterator::KeyEntrySet</a>* keyEntries);
<a name="l01417"></a>01417 
<a name="l01425"></a><a class="code" href="a00195.html#ae024ecc6a05c06a6c1f80cd594c387a6">01425</a>   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; <a class="code" href="a00195.html#ae024ecc6a05c06a6c1f80cd594c387a6" title="Returns the next position a call to &quot;next()&quot; would iterate to.">getNextPosition</a>()<span class="keyword"> const </span>{
<a name="l01426"></a>01426     <span class="keywordflow">if</span>(nextEntry == keyEntries-&gt;end())
<a name="l01427"></a>01427       <span class="keywordflow">throw</span> <a class="code" href="a00163.html" title="This exception is thrown by the MappingIterators when &quot;next()&quot; or &quot;nextPosition()&quot; is called although...">NoNextIteratorException</a>();
<a name="l01428"></a>01428     <span class="keywordflow">return</span> *nextEntry;
<a name="l01429"></a>01429   }
<a name="l01430"></a>01430 
<a name="l01436"></a><a class="code" href="a00195.html#a810c8af9b437ac5bd010cf5f4b154045">01436</a>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00195.html#a810c8af9b437ac5bd010cf5f4b154045" title="Lets the iterator point to the passed position.">jumpTo</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos) {
<a name="l01437"></a>01437     position.setArgValues(pos, <span class="keyword">true</span>);
<a name="l01438"></a>01438     nextEntry = keyEntries-&gt;upper_bound(position);
<a name="l01439"></a>01439   }
<a name="l01440"></a>01440 
<a name="l01447"></a><a class="code" href="a00195.html#aff0c387e3cc73d9821078492ae90e82f">01447</a>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00195.html#aff0c387e3cc73d9821078492ae90e82f" title="Lets the iterator point to the first &quot;position of interest&quot; of the underlying mapping.">jumpToBegin</a>(){
<a name="l01448"></a>01448     nextEntry = keyEntries-&gt;begin();
<a name="l01449"></a>01449 
<a name="l01450"></a>01450     <span class="keywordflow">if</span>(nextEntry == keyEntries-&gt;end()) {
<a name="l01451"></a>01451       position = <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>(dimensions);
<a name="l01452"></a>01452     } <span class="keywordflow">else</span> {
<a name="l01453"></a>01453       position = *nextEntry;
<a name="l01454"></a>01454       ++nextEntry;
<a name="l01455"></a>01455     }
<a name="l01456"></a>01456   }
<a name="l01457"></a>01457 
<a name="l01467"></a><a class="code" href="a00195.html#af63f318fde0e50bc3383ebf1686d4a7a">01467</a>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00195.html#af63f318fde0e50bc3383ebf1686d4a7a" title="Increases the position of the iterator to the passed position.">iterateTo</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos) {
<a name="l01468"></a>01468     position.setArgValues(pos, <span class="keyword">true</span>);
<a name="l01469"></a>01469     <span class="keyword">const</span> KeyEntrySet::const_iterator keyEntriesEnd = keyEntries-&gt;end();
<a name="l01470"></a>01470     <span class="keywordflow">while</span>(nextEntry != keyEntriesEnd &amp;&amp; !(position &lt; *nextEntry))
<a name="l01471"></a>01471       ++nextEntry;
<a name="l01472"></a>01472   }
<a name="l01473"></a>01473 
<a name="l01481"></a><a class="code" href="a00195.html#a4984e94b5c551edac1270dc35db8e02f">01481</a>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00195.html#a4984e94b5c551edac1270dc35db8e02f" title="Iterates to the next &quot;point of interest&quot; of the Mapping.">next</a>() {
<a name="l01482"></a>01482     <span class="keywordflow">if</span>(nextEntry == keyEntries-&gt;end())
<a name="l01483"></a>01483       <span class="keywordflow">throw</span> <a class="code" href="a00163.html" title="This exception is thrown by the MappingIterators when &quot;next()&quot; or &quot;nextPosition()&quot; is called although...">NoNextIteratorException</a>();
<a name="l01484"></a>01484 
<a name="l01485"></a>01485     position = *nextEntry;
<a name="l01486"></a>01486     ++nextEntry;
<a name="l01487"></a>01487   }
<a name="l01488"></a>01488 
<a name="l01496"></a><a class="code" href="a00195.html#a25c1a14b6104fd53f38f1ffaa0555864">01496</a>   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="a00195.html#a25c1a14b6104fd53f38f1ffaa0555864" title="Returns true if the current position of the iterator is equal or bigger than the first point of inter...">inRange</a>()<span class="keyword"> const </span>{
<a name="l01497"></a>01497     <span class="keywordflow">return</span> !(keyEntries-&gt;empty()
<a name="l01498"></a>01498          || (*(keyEntries-&gt;rbegin()) &lt; position)
<a name="l01499"></a>01499          || (position &lt; *(keyEntries-&gt;begin())));
<a name="l01500"></a>01500   }
<a name="l01501"></a>01501 
<a name="l01507"></a><a class="code" href="a00195.html#a7d5c3fb31916385945abed1d6a38f797">01507</a>   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="a00195.html#a7d5c3fb31916385945abed1d6a38f797" title="Returns true if there is a next position a call to &quot;next()&quot; can iterate to.">hasNext</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nextEntry != keyEntries-&gt;end(); }
<a name="l01508"></a>01508 
<a name="l01514"></a><a class="code" href="a00195.html#a54d571cc74688a5ce0b23a8d8ba5f04c">01514</a>   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; <a class="code" href="a00195.html#a54d571cc74688a5ce0b23a8d8ba5f04c" title="Returns the current position of the iterator.">getPosition</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> position; }
<a name="l01515"></a>01515 
<a name="l01523"></a><a class="code" href="a00195.html#ab76e81f21df7609e4af1d65e570e08ef">01523</a>   <span class="keyword">virtual</span> argument_value_t <a class="code" href="a00195.html#ab76e81f21df7609e4af1d65e570e08ef" title="Returns the value of the underlying mapping at the current position of the iterator.">getValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mapping-&gt;getValue(position); }
<a name="l01524"></a>01524 };
<a name="l01525"></a>01525 
<a name="l01545"></a><a class="code" href="a00194.html">01545</a> <span class="keyword">class </span>MIXIM_API <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>:<span class="keyword">public</span> <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a> {
<a name="l01546"></a>01546 <span class="keyword">protected</span>:
<a name="l01548"></a><a class="code" href="a00194.html#a4a48a5d4281c2bf8eda6b0cd96fb67e9">01548</a>   <span class="keyword">typedef</span> std::set&lt;Argument&gt; <a class="code" href="a00194.html#a4a48a5d4281c2bf8eda6b0cd96fb67e9" title="Type for a set of Arguments defining key entries.">KeyEntrySet</a>;
<a name="l01549"></a>01549 
<a name="l01552"></a><a class="code" href="a00194.html#a022d4ae04338d12fad79f4e2f9b1f7af">01552</a>   <a class="code" href="a00194.html#a4a48a5d4281c2bf8eda6b0cd96fb67e9" title="Type for a set of Arguments defining key entries.">KeyEntrySet</a> <a class="code" href="a00194.html#a022d4ae04338d12fad79f4e2f9b1f7af" title="A set of Arguments defining the &quot;points of interest&quot; an iterator should iterate over.">keyEntries</a>;
<a name="l01553"></a>01553 
<a name="l01554"></a>01554 <span class="keyword">protected</span>:
<a name="l01555"></a>01555 
<a name="l01560"></a>01560   <span class="keywordtype">void</span> createKeyEntries(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; from, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; to, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; step, <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos);
<a name="l01561"></a>01561 
<a name="l01566"></a>01566   <span class="keywordtype">void</span> createKeyEntries(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; from, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; to, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; step,
<a name="l01567"></a>01567               DimensionSet::const_iterator curDim, <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos);
<a name="l01568"></a>01568 
<a name="l01569"></a>01569 <span class="keyword">public</span>:
<a name="l01576"></a><a class="code" href="a00194.html#a70d0d044f36428965b77233bbf4c698b">01576</a>   <span class="keyword">virtual</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>* <a class="code" href="a00194.html#a70d0d044f36428965b77233bbf4c698b" title="Returns a pointer of a new Iterator which is able to iterate over the Mapping.">createConstIterator</a>()<span class="keyword"> const </span>{
<a name="l01577"></a>01577     <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>(<span class="keyword">this</span>, &amp;keyEntries);
<a name="l01578"></a>01578   }
<a name="l01579"></a>01579 
<a name="l01586"></a><a class="code" href="a00194.html#ab0dfc0c3ba9ba222176b29d88a4e6578">01586</a>   <span class="keyword">virtual</span> <a class="code" href="a00059.html" title="Defines an const iterator for a ConstMapping which is able to iterate over the Mapping.">ConstMappingIterator</a>* <a class="code" href="a00194.html#ab0dfc0c3ba9ba222176b29d88a4e6578" title="Returns a pointer of a new Iterator which is able to iterate over the Mapping. The iterator starts at...">createConstIterator</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos)<span class="keyword"> const </span>{
<a name="l01587"></a>01587     <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="a00195.html" title="A fully working ConstIterator-implementation usable with almost every ConstMapping.">SimpleConstMappingIterator</a>(<span class="keyword">this</span>, &amp;keyEntries, pos);
<a name="l01588"></a>01588   }
<a name="l01589"></a>01589 
<a name="l01590"></a>01590 <span class="keyword">public</span>:
<a name="l01595"></a><a class="code" href="a00194.html#a0794f7d9a8afe0dc17232211eb451302">01595</a>   <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; dims):
<a name="l01596"></a>01596     <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(dims), keyEntries() {}
<a name="l01597"></a>01597   <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>(<span class="keyword">const</span> <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>&amp; o):
<a name="l01598"></a>01598     <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(o), keyEntries(o.keyEntries) {}
<a name="l01599"></a>01599 
<a name="l01606"></a><a class="code" href="a00194.html#aa49498d175e63415d1b16656ffe2e28b">01606</a>   <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>&amp; <a class="code" href="a00194.html#aa49498d175e63415d1b16656ffe2e28b" title="SimpleConstMapping assignment operator.">operator=</a>(<span class="keyword">const</span> <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>&amp; copy) {
<a name="l01607"></a>01607     <a class="code" href="a00058.html#a28a66ff19a5046d773d6f0c49f12353f" title="ConstMapping assignment operator.">ConstMapping::operator=</a>(copy);
<a name="l01608"></a>01608     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l01609"></a>01609   }
<a name="l01610"></a>01610 
<a name="l01619"></a><a class="code" href="a00194.html#a77247e2c90cc1d33bcfc305e575cab2c">01619</a>   <span class="keywordtype">void</span> <a class="code" href="a00194.html#a77247e2c90cc1d33bcfc305e575cab2c" title="Swaps data with another SimpleConstMapping.">swap</a>(<a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>&amp; s) { <a class="code" href="a00058.html#a473df8fa0aa441ca1adb356b17b1f59f" title="Swaps data with another ConstMapping.">ConstMapping::swap</a>(s); <span class="comment">/* swap the base class members */</span> }
<a name="l01620"></a>01620 
<a name="l01628"></a><a class="code" href="a00194.html#a2e89eb287b66b66bec570afa716a7e78">01628</a>   <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; dims,
<a name="l01629"></a>01629                      <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; key):
<a name="l01630"></a>01630     <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(dims), keyEntries() {
<a name="l01631"></a>01631 
<a name="l01632"></a>01632     initializeArguments(key);
<a name="l01633"></a>01633   }
<a name="l01634"></a>01634 
<a name="l01642"></a><a class="code" href="a00194.html#a8ad8dfd538dabda7d637819a2f34a1b5">01642</a>   <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; dims,
<a name="l01643"></a>01643                      <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; key1, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; key2):
<a name="l01644"></a>01644     <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(dims), keyEntries() {
<a name="l01645"></a>01645 
<a name="l01646"></a>01646     initializeArguments(key1, key2);
<a name="l01647"></a>01647   }
<a name="l01648"></a>01648 
<a name="l01656"></a><a class="code" href="a00194.html#acd1a6f80289031ea0f5ccc6b29cae9d5">01656</a>   <a class="code" href="a00194.html" title="Abstract subclass of ConstMapping which can be used as base for any ConstMapping implementation with ...">SimpleConstMapping</a>(<span class="keyword">const</span> <a class="code" href="a00086.html" title="Represents a set of dimensions which is used to define over which dimensions a mapping is defined (th...">DimensionSet</a>&amp; dims,
<a name="l01657"></a>01657              <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; min, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; max, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; interval):
<a name="l01658"></a>01658     <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>(dims), keyEntries() {
<a name="l01659"></a>01659 
<a name="l01660"></a>01660     initializeArguments(min, max, interval);
<a name="l01661"></a>01661   }
<a name="l01662"></a>01662 
<a name="l01669"></a><a class="code" href="a00194.html#a17d3c5e8c98e7451a844d59c95c7272a">01669</a>   <span class="keywordtype">void</span> <a class="code" href="a00194.html#a17d3c5e8c98e7451a844d59c95c7272a" title="Initializes the key entry set with the passed position as entry.">initializeArguments</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; key){
<a name="l01670"></a>01670     keyEntries.clear();
<a name="l01671"></a>01671     keyEntries.insert(key);
<a name="l01672"></a>01672   }
<a name="l01673"></a>01673 
<a name="l01680"></a><a class="code" href="a00194.html#a8555ecac0cfcfdcc07d540a640975607">01680</a>   <span class="keywordtype">void</span> <a class="code" href="a00194.html#a8555ecac0cfcfdcc07d540a640975607" title="Initializes the key entry set with the passed two positions as entries.">initializeArguments</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; key1, <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; key2){
<a name="l01681"></a>01681     keyEntries.clear();
<a name="l01682"></a>01682     keyEntries.insert(key1);
<a name="l01683"></a>01683     keyEntries.insert(key2);
<a name="l01684"></a>01684   }
<a name="l01685"></a>01685 
<a name="l01693"></a>01693   <span class="keywordtype">void</span> initializeArguments(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; min,
<a name="l01694"></a>01694                <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; max,
<a name="l01695"></a>01695                <span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; interval);
<a name="l01696"></a>01696 
<a name="l01703"></a>01703   <span class="keyword">virtual</span> argument_value_t <a class="code" href="a00058.html#afabbd15bb8f50e45901f99633d0a47c9" title="Returns the value of this Mapping at the position specified by the passed Argument.">getValue</a>(<span class="keyword">const</span> <a class="code" href="a00013.html" title="Defines an argument for a mapping.">Argument</a>&amp; pos) <span class="keyword">const</span> = 0;
<a name="l01704"></a>01704 
<a name="l01710"></a>01710   <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>* <a class="code" href="a00058.html#a741e083fb18412a3d9cde7eac3dced10" title="returns a deep copy of this mapping instance.">constClone</a>() <span class="keyword">const</span>  = 0;
<a name="l01711"></a>01711 };
<a name="l01712"></a>01712 
<a name="l01713"></a>01713 
<a name="l01714"></a>01714 
<a name="l01715"></a>01715 
<a name="l01716"></a>01716 <span class="preprocessor">#endif </span><span class="comment">/*FUNCTION_H_*/</span>
</pre></div></div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><b>MappingBase.h</b>      </li>

    <li class="footer">Generated on Tue Mar 5 2013 21:26:30 for MiXiM by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.5.1 </li>
   </ul>
 </div>


</body>
</html>
